import { observable, action } from 'mobx';
import { WeaTableNew, WeaForm } from 'comsMobx'
import { WeaTools, WeaLocaleProvider } from 'ecCom';
const getLabel = WeaLocaleProvider.getLabel;
import * as Task_Apis from "../../apis/task"
import { getFormInitDatas, cptAddFormRules } from "../../util/index"
import { message, Modal } from "antd"
const confirm = Modal.confirm;
/**
 * @author ljc 2017-12-19
 * 任务的编辑，新增等
 */
export class TaskInfoStore {
    @observable title = getLabel(15284, "编辑任务");

    @observable rightMenu = [];
    @observable taskid = "";
    @observable taskForm = new WeaForm();
    @observable visible = false;
    @observable taskInfo = {};
    @observable fieldinfo = [];
    @observable type = "";
    @observable baseParams = {}; //基本数据保存
    @observable validateRules = {};
    @observable selectedRowKeys = [];

    @observable isTimeShow = '1';
    
    @action
    handleDialog = (bool, type, id, params = {}) => {
        this.visible = bool;
        if (bool) {
            this.taskid = id;
            this.type = type;
            if (type == 'add') {
                this.title = getLabel(1342, "添加任务");
            } else if (type == 'view') {
                this.title = getLabel(382572, "查看任务");
            } else if (type == 'edit') {
                this.title = getLabel(15284, "编辑任务");
            }
            this.baseParams = params;
            this.getTaskInfo(type, id, params);
        }
    }

    getTaskInfo = (type, id, params = {}) => {
        this.taskForm = new WeaForm();
        Task_Apis.getTaskForm({ viewtype: type, taskid: this.taskid, ...params }).then(data => {
            this.isTimeShow = data.isTimeShow;
            this.taskInfo = data;
            this.rightMenu = data.rightMenus;
            this.fieldinfo = data.fieldinfo;
            this.taskForm && !this.taskForm.isFormInit && this.taskForm.initFormFields(this.fieldinfo);
            this.taskForm.isFormInit && this.taskForm.updateFields(getFormInitDatas(this.fieldinfo), false);
        })
    }

    setFormFields = (value) => {
        this.taskForm.updateFields(value, false);    //true代表完全覆盖方式更新条件值
    }

    //保存规则
    setValidate = (params = {}) => {
        this.validateRules = params;
    }

    @action
    delTask = (type, taskid, callBack) => {
        let _this = this;
        Modal.confirm({
            title: getLabel(15172, "系统提示"),
            content: getLabel(83925, "该任务及其子任务都会被删除，您确认要删除吗？"),
            onOk() {
                Task_Apis.delTask({ method: type, taskid: taskid }).then(data => {
                    if (data.success) {
                        window._table.reLoad();
                        if(callBack){
                            callBack();
                        }
                    } else {
                        message.error(getLabel(383746, "请求失败") + "：" + data.msgcode);
                    }
                })
            },
            onCancel() { },
        })
    }

    resetStage = (params,taskid) => {
        const { isFormInit } = this.taskForm;
        let conditions = this.fieldinfo ; 
        isFormInit && conditions.map(c => {
            let items = [];
            c.items.map((field, index) => {
                if(field.domkey[0]=="stageid"){
                    field.viewAttr = params.viewAttr;
                    if(params.viewAttr == "1"){
                        Task_Apis.getTaskStage({taskid: taskid }).then(data => {
                            this.taskForm.updateFields({stageid : { value : data.stageid}}, false);    //true代表完全覆盖方式更新条件值
                        });
                    }else{
                        this.taskForm.updateFields({stageid : { value : ""}}, false);
                    }
                }
            })
        })

        this.fieldinfo = conditions;
    }

    @action
    delTaskBatch=(type,taskid)=>{
        let _this = this;
        if(this.selectedRowKeys.length > 0){
            Modal.confirm({
                title: getLabel(15172,"系统提示"),
                content: getLabel(83925,"该任务及其子任务都会被删除，您确认要删除吗？"),
                onOk() {
                    Task_Apis.delTask({method:type,taskids:`${_this.selectedRowKeys}`}).then(data=>{
                        if(data.success){
                            _this.selectedRowKeys = [];
                            window._table.reLoad();
                            Modal.success({
                                title: getLabel(15172,"系统提示"),
                                content: getLabel(83472,"删除成功！"),
                            });
                        }else{
                            message.error(getLabel(383746,"请求失败")+"："+data.msgcode);
                        }
                       
                    })
                },
                onCancel() { },
            })
        } 
     
    }

    @action
    onRowSelect = (rows) => {
        this.selectedRowKeys = rows;
	}
}